package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import com.alibaba.dubbo.config.annotation.Reference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/company")
@Slf4j
public class CompanyController {

    //打印日志的工具类
    //private Log log = LogFactory.getLog(CompanyController.class);

    @Reference
    private CompanyService companyService;

    /**
     * 1. 列表
     * @param model
     * @return
     */
    @RequestMapping("/list")
    public String list(Model model){
       List<Company> list = companyService.findAll();
       model.addAttribute("list",list);
       return "company/company-list";
    }

    /**
     * 2. 进入添加页面：company-add.jsp
     * @return
     */
    @RequestMapping("/save")
    public String save(Date birth){
        System.out.println(birth);
        return "success";
    }


    @RequestMapping("/toAdd")
    public String toAdd(){
        return "company/company-add";
    }

    /**
     * 3. 添加/修改
     * 请求地址：http://localhost:8080/company/edit
     * 请求参数：id=11&name=11&licenseId=11&city=1&address=11
     * 响应数据：（添加成功，需要在列表重新显示企业信息）
     * 响应地址：重定向到列表 (添加、修改、删除后都用重定向，其他用转发)
     */
    @RequestMapping("/edit")
    public String edit(Company company){

        // // 根据id判断是添加还是修改
        if(StringUtils.isEmpty(company.getId())){
           // 添加
            companyService.save(company);
        }else {
            //修改
            companyService.update(company);
        }
        //新增，修改，删除需要重定向到list，因为转发地址不变，可能刷新页面重新提交表单，而且地址也需要修改
        return "redirect:/company/list";
    }

    /**
     * 4. 列表页面，点击编辑，进入company-update.jsp页面
     */
    @RequestMapping("/toUpdate")
    //id为字符串，是因为前端传送过来的数据都是字符串
    public String toUpdate(String id, Model model){
        //根据id查询
        Company company = companyService.findById(id);

        //存储到请求域中,使得页面可以回显
        model.addAttribute("company",company);

        return "company/company-update";
    }

    @RequestMapping("/delete")
    public String delete(String id){

        //根据id删除
        companyService.delete(id);

        return "redirect:/company/list";
    }

}
